package simco.framework.gui.swing.comp;

import java.awt.BorderLayout;
import java.util.ResourceBundle;

import javax.swing.DefaultListSelectionModel;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;

import simco.framework.gui.services.data.InfoModel;
import simco.framework.gui.swing.listeners.ToolsActionsListener;
import simco.framework.gui.utils.LocalizationUtil;

/**
 * Tato trida reprezentuje panel se zalozkami. Prni funkci
 * je zobrazovani informaci o vybranem objektu na platne
 * a  druhou funkci je zobrazeni panelu pro vyber 
 * vyber modu zobrazeni grafickych objektu na platne.
 * 
 * @author Matej Prokop, mythge@students.zcu.cz
 */
public class InfoTab extends JTabbedPane
{
	/**
	 * Vytvori novy panel se zalozkami
	 * 
	 * @param actionListener reference na objekt, obslujici zmenu
     * modu zobrazeni
	 * @param infoModel datovy model pro JList, do ktereho
	 * jsou vypisovany informace o aktualne vybranem
	 * objektu
	 */
	public InfoTab(ToolsActionsListener actionListener, InfoModel infoModel)
	{
	    JTabbedPane tabbedPane = this;

		ResourceBundle rb = LocalizationUtil.getResource(GuiMainFrame.class
				.getSimpleName());

		JComponent panel1 = makeInfoPanel(infoModel);
		tabbedPane.addTab(rb.getString("infoTab.selectedObject"), panel1);

		JComponent panel3 = new ViewModePickerPanel(actionListener);
		tabbedPane.addTab(rb.getString("infoTab.viewMode"), panel3);
		tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
	}

	/**
	 * Vytvori panel pro zobrazovani informaci o prave vybranem
	 * objektu na platne.
	 * @param infoModel datovy model pro JList, do ktereho
	 * jsou vypisovany informace o aktualne vybranem
	 * objektu
	 * @return vraci vytvoreny panel
	 */
	private JPanel makeInfoPanel(InfoModel infoModel)
	{
		JPanel panel = new JPanel();
		panel.setLayout(new BorderLayout());
								
		JList calContent = new JList( infoModel );
		calContent.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
		
		JScrollPane scroll = new JScrollPane(calContent);
		panel.add( scroll, BorderLayout.CENTER );
		
		return panel;
	}
}
